#ifndef ELF_COMMON_H
#define ELF_COMMON_H
#include <string>
struct ELF_HEADER{
    std::string strMagicNumber;
    std::string strObjectFileTyoe;
    std::string strArchitecture;
    std::string strObjectFileVersion;
    std::string strEntryPointVirtualAddress;
    std::string strProgramHeaderOffset;
    std::string strSectionHeaderOffset;
    std::string strProcessorSpecificFlags;
    std::string strElfHeaderSize;
    std::string strProgramHeaderSize;
    std::string strProgramHeaderNumber;
    std::string strSectionHeaderSize;
    std::string strSectionHeaderNumber;
    std::string strSectionHeaderStringTableIndex;
};

struct ELF_SHDR{
    std::string	strSectionName;             /* Section name (string tbl index) */
    std::string	strSectionType;             /* Section type */
    std::string	strSectionFlags;			/* Section flags */
    std::string	strSectionVirtualAddr;		/* Section virtual addr at execution */
    std::string	strSectionOffset;           /* Section file offset */
    std::string	strSectionSize;             /* Section size in bytes */
    std::string	strSectionLink;             /* Link to another section */
    std::string	strSectionInfo;             /* Additional section information */
    std::string	strSectionAlignment;		/* Section alignment */
    std::string	strSectionEntrySize;		/* Entry size if section holds table */
};

struct ELF_PHDR{
    std::string strSegmentType;			/* Segment type */
    std::string strSegmentOffset;		/* Segment file offset */
    std::string strSegmentVaddr;		/* Segment virtual address */
    std::string strSegmentPaddr;		/* Segment physical address */
    std::string strSegmentFilesz;		/* Segment size in file */
    std::string strSegmentMemsz;		/* Segment size in memory */
    std::string strSegmentFlags;		/* Segment flags */
    std::string strSegmentAlign;		/* Segment alignment */
};
#endif // ELF_COMMON_H
